<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      class Spuerstar {
        // constructor类的默认方法 实例化的时候会先调用
        constructor(unmae) {
          this.unmae = unmae;
          // console.log(this);
        }
        // 在 TypeScript 中，当你在类中定义方法时，如果要使用箭头函数语法，必须通过赋值语句 (=) 来进行定义
        // 。这是因为箭头函数语法实际上是在定义一个类的属性，并将其值设为一个函数，而不是传统的类方法定义方式。
        eat = () => {
          console.log(this.name + "吃东西");
        };

        runs = function (params) {};
        sing() {
          console.log("唱歌");
          //   console.log(this);
          setTimeout(() => {
            // 箭头函数中没有自己的this，它的this时继承外部的
            console.log(this, "箭头函数");
          }, 0);
        }
        // 静态 方法 只能通过类调用不能实例化调用
        static sayhi() {
          console.log("say hello");
        }
        get fullName() {
          return this.unmae;
        }
        set fullName(value) {
          console.log(value, "vakue");
          this.unmae = value;
        }
      }

      var ldh = new Spuerstar("ldh");
      ldh.sing();
      // ldh.sayhi();
      // Spuerstar.sayhi()
      console.log(ldh.fullName);
      ldh.fullName = "zzzzzzzzzzzzzzzz";
    </script>
  </body>
</html>
